﻿// 871. 约数之和.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <unordered_map>



using namespace std;
/*
https://www.acwing.com/problem/content/873/
给定 n 个正整数 ai，请你输出这些数的乘积的约数之和，答案对 109+7 取模。

输入格式
第一行包含整数 n。

接下来 n 行，每行包含一个整数 ai。

输出格式
输出一个整数，表示所给正整数的乘积的约数之和，答案需对 109+7 取模。

数据范围
1≤n≤100,
1≤ai≤2×109
输入样例：
3
2
6
8
输出样例：
252
*/

/*
如果 N = p1^c1 * p2^c2 * ... *pk^ck
约数个数： (c1 + 1) * (c2 + 1) * ... * (ck + 1)
约数之和： (p1^0 + p1^1 + ... + p1^c1) * ... * (pk^0 + pk^1 + ... + pk^ck)
*/


unordered_map<int, int> mm;
const int MOD = 1e9 + 7;

void calc(int x) {
	for (int i = 2; i*i <= x; i++) {
		int t = 0;
		while (x % i == 0) {
			x /= i; t++;
		}
		if (t != 0) {
			mm[i] += t;
		}
	}
	if (x != 1) {
		mm[x] += 1;
	}

	return;
}


int main()
{
	int t;
	cin >> t;
	for (int i = 0; i < t; i++) {
		int a;
		cin >> a;
		//分解质因数
		calc(a);
	}
	long long ans = 1;
	for (auto e : mm) {
		int base = e.first; int mi = e.second;
		long long  v = base;
		long long curr = 1;
		while (mi--) {
			curr += v;
			curr = curr % MOD;
			v = v*base; v = v % MOD;
		}
		ans *= curr;
		ans = ans % MOD;
	}

	cout << ans << endl;

	return 0;
}

 